package com.dragon.lambda;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 * @author: dragon
 * @description: lambda表达式的方法引用
 * @date:Created in 2019/03/11
 */
public class TestMethodReference {

//	一般方法的引用格式是
//
//	如果是静态方法，则是ClassName::methodName。如 Object ::equals
//
//	如果是实例方法，则是Instance::methodName。如Object obj=new Object();obj::equals;
//
//	构造函数.则是ClassName::new

    public static void main(String[] args) {
        JFrame jFrame = new JFrame();
        jFrame.setLayout(new FlowLayout());
        jFrame.setVisible(true);

        JButton button1 = new JButton("点我!");
        JButton button2 = new JButton("也点我!");

        jFrame.getContentPane().add(button1);
        jFrame.getContentPane().add(button2);
        // 使用lambda表达式
        button1.addActionListener(e -> System.out.println("这里是Lambda的实现方法"));
        // 使用方法引用
        button2.addActionListener(TestMethodReference::doSomething);
    }

    /**
     * 这里是函数式接口ActionListener的实现方法
     *
     * @param actionEvent 事件对象
     * @return void
     * @author dragon
     * @date 2019/03/11 16:11
     * @version V1.0.0-RELEASE
     */
    public static void doSomething(ActionEvent actionEvent) {
        System.out.println("这里是方法引用实现方式");

    }
}
